home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_300 / 352_01 / vecpolar.cpp < prev    next >
C/C++ Source or Header  |  1991-04-22  |  849b  |  40 lines

  1. //  VECPOLAR.CPP
  2. //            routines for polar 2 rect conversion.
  3. //            applies to complex vectors.
  4.  
  5. #include <stdlib.h>
  6. #include "wtwg.h"
  7. #include "dblib.h"
  8. #include "vector.h"
  9.  
  10.  
  11. void ToPolar ( complex& z )
  12.     {
  13.     double fmag   = norm ( z ); 
  14.     z = complex ( ( (fmag>SMALL_VAL)? sqrt(fmag) : fmag * 2 ), arg(z) );
  15.     }
  16.     
  17.      
  18. void     CVector::ToPolar ( void )
  19.     //     convert a complex CVector to mag/phase form
  20.     //    The range of the phase angle is -PI-->+PI, in radians
  21.     {
  22.     if ( ispolar ) return;
  23.     int vn = x.n;
  24.     float *xv = x.v;
  25.     float *yv = y.v;
  26.     complex  rect;
  27.         
  28.     while ( --vn >= 0 ); 
  29.         {
  30.         rect    = complex (*xv, *yv);
  31.         ::ToPolar(rect);        // note scope resolution            
  32.         *(xv++)   = real(rect);
  33.         *(yv++)   = imag(rect);
  34.         }
  35.     ispolar = ON;
  36.     
  37.     return;    /* CVector::ToPolar() */
  38.     }
  39.  
  40. //---------------------- end of VECPOLAR.CPP